// 给你一个二进制字符串 s。如果字符串中由 1组成的 最长 连续子字符串严格长于 由0组成的 最长 连续子字符串，返回 true ;否则，返回false
// 例如，s=”110100010”中，由1组成的最长连续子字符串的长度是2，由0组成的最长连续子字符串的长度是3
// 注意，如果字符串中不存在0，此时认为由0组成的最长连续子字符串的长度是0。字符串中不存在 1的情况也适用此规则。

/* 
直接遍历其实也一样快，只是递推提供一个思路
*/

#include <stdio.h>
#include <stdlib.h>

int main(){
    char s[] = "111100010";
    int n = sizeof(s)/sizeof(s[0]);

    int max_0 = 0,max_1 = 0;
    int *dp = (int*)malloc(n*sizeof(int)); 
    dp[0] = 1; // 初始化dp
    if(s[0]=='0'){
        max_0 = 1;
    }else{
        max_1 = 1;
    }
    for(int i=1;i<n;i++){
        if(s[i]==s[i-1]){
            dp[i] = dp[i-1] + 1;
        }else{
            dp[i] = 1;
        }
        if(s[i]=='0' && dp[i]>max_0){
            max_0 = dp[i];
        }
        if(s[i]=='1' && dp[i]>max_1){
            max_1 = dp[i];
        }
    }
    if(max_1>max_0){
        printf("true");
    }else{
        printf("false");
    }

    return 0;
}